package com.xhj.mybatis.logging;

/**
 * Log
 *
 * @author XJks
 * @description Log接口用于定义日志记录的标准方法，不同的日志实现类可以根据该接口进行实现，方便统一管理和调用日志功能。
 */
public interface Log {

    /**
     * 判断是否启用Debug级别日志。
     * Debug日志用于输出调试信息，通常在开发和排查问题时使用。
     *
     * @return 如果启用Debug日志则返回true，否则返回false
     */
    boolean isDebugEnabled();

    /**
     * 判断是否启用Trace级别日志。
     * Trace日志用于输出更详细的跟踪信息，通常用于定位复杂问题。
     *
     * @return 如果启用Trace日志则返回true，否则返回false
     */
    boolean isTraceEnabled();

    /**
     * 记录错误日志，并附带异常信息。
     *
     * @param s 错误信息内容
     * @param e 异常对象，包含详细的异常堆栈信息
     */
    void error(String s, Throwable e);

    /**
     * 记录错误日志，不附带异常信息。
     *
     * @param s 错误信息内容
     */
    void error(String s);

    /**
     * 记录Debug级别日志。
     *
     * @param s 调试信息内容
     */
    void debug(String s);

    /**
     * 记录Trace级别日志。
     *
     * @param s 跟踪信息内容
     */
    void trace(String s);

    /**
     * 记录警告级别日志。
     *
     * @param s 警告信息内容
     */
    void warn(String s);

}
